import moment from "moment";
import { zombieList } from "./zombie";

// 解锁墓碑玩法的提示
let tombstoneOpenTip = [
    '你使用安息乡的钥匙，打开了这尘封已久的墓园的大门....',
    '· 恭喜你解锁了僵尸相关的玩法',
    '发送指令「 墓碑 」 或 「 tombstone 」打开墓碑面板',
    '唤醒沉睡的僵尸为你而战吧！',
    `现在 你也是"我们"的一员了...`,
    `There's a zombie on your lawn ~`,
]

let userDefaultTombstone = {
    isUnlock: false, // 是否已解锁墓碑玩法
    isFirstShowInfo: true, // 首次查看墓碑面板
    zombie: [], // 现在拥有的僵尸列表
    zombieMax: 10, // 拥有僵尸最大数量
    cdEnd: '', // 冷却结束时间
    wakeUpTime: '', // 唤醒完成时间
    wakeUpZombie: [], // 正在唤醒的僵尸列表
    wakeUpZombieMax: 5, // 同时唤醒的僵尸最大数量
    level: 1, // 墓碑等级
    undeadEssence: 0, // 不死精元数量
    sacrifice: { // 献祭路线
        battle: 0,
        base: 0,
        tombstone: 0,
    },
    sacrificeBuff: { // 献祭提供的buff

    }
}

const getUserDefaultTombstone = () => {
    return {
        isUnlock: false, // 是否已解锁墓碑玩法
        isFirstShowInfo: true, // 首次查看墓碑面板
        zombie: [], // 现在拥有的僵尸列表
        zombieMax: 10, // 拥有僵尸最大数量
        cdEnd: '', // 冷却结束时间
        wakeUpTime: '', // 唤醒完成时间
        wakeUpZombie: [], // 正在唤醒的僵尸列表
        wakeUpZombieMax: 5, // 同时唤醒的僵尸最大数量
        level: 1, // 墓碑等级
        undeadEssence: 0, // 不死精元数量
        sacrifice: { // 献祭路线
            battle: 0,
            base: 0,
            tombstone: 0,
        },
        sacrificeBuff: { // 献祭提供的buff
    
        }
    }
}

const sacrifice = { // 墓碑献祭路线选择
    battle: [ // 战斗强化
        {
            name: '黑暗意志',
            desc: '提升僵尸在抵达花园内时 对阳光池造成的损伤 提升10%',
            value: 0.1, // 提升比例
            id: 1,
            need: 10, // 需要消耗的不死精元数量
        },
        {
            name: '无惧阳光',
            desc: '僵尸攻击力增加5% 仅在白天生效',
            value: 0.05, // 提升比例
            id: 2,
            need: 30, // 需要消耗的不死精元数量
        },
        {
            name: '潜伏',
            desc: '僵尸攻击力增加5% 仅在夜晚生效',
            value: 0.05, // 提升比例
            id: 3,
            need: 50, // 需要消耗的不死精元数量
        },
        {
            name: '防具强化「 Ⅰ 」',
            desc: '僵尸最大生命值固定提升40 仅在局内生效',
            value: 40, // 提升生命值
            id: 4,
            need: 70, // 需要消耗的不死精元数量
        },
        {
            name: '适应「 Ⅰ 」',
            desc: '僵尸最大生命值提升10% 仅在局内生效',
            value: 10,
            id: 5,
            need: 100, // 需要消耗的不死精元数量
        },
        {
            name: '吞噬「 Ⅰ 」',
            desc: '进食恢复率 提升10%',
            value: 10,
            id: 6,
            need: 200, // 需要消耗的不死精元数量
        },
        {
            name: '清扫障碍「 Ⅰ 」',
            desc: '对坚果类防御植物造成伤害 提升10%',
            value: 10,
            id: 7,
            need: 150, // 需要消耗的不死精元数量
        },
        {
            name: '清扫障碍「 Ⅱ 」',
            desc: '对坚果类防御植物造成伤害 提升10%',
            value: 10,
            id: 8,
            need: 300, // 需要消耗的不死精元数量
        },
        {
            name: '防具强化「 Ⅱ 」',
            desc: '僵尸最大生命值固定提升200 仅在局内生效',
            value: 80, // 提升生命值
            id: 9,
            need: 400, // 需要消耗的不死精元数量
        },
        {
            name: '适应「 Ⅱ 」',
            desc: '僵尸最大生命值提升20% 仅在局内生效',
            value: 20,
            id: 10,
            need: 500, // 需要消耗的不死精元数量
        },
        {
            name: '吞噬「 Ⅱ 」',
            desc: '进食恢复率 提升10%',
            value: 10,
            id: 11,
            need: 1000, // 需要消耗的不死精元数量
        },
        {
            name: '清扫障碍「 Ⅲ 」',
            desc: '对坚果类防御植物造成伤害 提升10%',
            value: 10,
            id: 12,
            need: 2000, // 需要消耗的不死精元数量
        },
    ],
    base: [ // 基础强化
        {
            name: '脑髓渴求「 Ⅰ 」',
            desc: '提升墓园中的僵尸的攻击力 固定提升2点',
            value: 2,
            id: 1,
            need: 10, // 需要消耗的不死精元数量
        },
        {
            name: '不朽「 Ⅰ 」',
            desc: '提升墓园中的僵尸的最大生命值 固定提升50点',
            value: 50,
            id: 2,
            need: 20, // 需要消耗的不死精元数量
        },
        {
            name: '疾行「 Ⅰ 」',
            desc: '提升墓园中的僵尸的移动速度 移动需要的时间固定减少100ms',
            value: 100,
            id: 3,
            need: 30, // 需要消耗的不死精元数量
        },
        {
            name: '破坏意志「 Ⅰ 」',
            desc: '提升墓园中的僵尸的攻击力 提升10%',
            value: 0.1,
            id: 4,
            need: 100, // 需要消耗的不死精元数量
        },
        {
            name: '进食「 Ⅰ 」',
            desc: '提升墓园中的僵尸的攻击速度 攻击间隔固定减少20ms',
            value: 20,
            id: 5,
            need: 40, // 需要消耗的不死精元数量
        },
        {
            name: '脑髓渴求「 Ⅱ 」',
            desc: '提升墓园中的僵尸的攻击力 固定提升3点',
            value: 3,
            id: 6,
            need: 60, // 需要消耗的不死精元数量
        },
        {
            name: '不朽「 Ⅱ 」',
            desc: '提升墓园中的僵尸的最大生命值 固定提升100点',
            value: 100,
            id: 7,
            need: 80, // 需要消耗的不死精元数量
        },
        {
            name: '疾行「 Ⅱ 」',
            desc: '提升墓园中的僵尸的移动速度 移动需要的时间固定减少200ms',
            value: 200,
            id: 8,
            need: 100, // 需要消耗的不死精元数量
        },
        {
            name: '不死意志「 Ⅰ 」',
            desc: '提升墓园中的僵尸的最大生命值 提升10%',
            value: 0.1,
            id: 9,
            need: 200, // 需要消耗的不死精元数量
        },
        {
            name: '进食「 Ⅱ 」',
            desc: '提升墓园中的僵尸的攻击速度 攻击间隔固定减少30ms',
            value: 30,
            id: 10,
            need: 130, // 需要消耗的不死精元数量
        },
        {
            name: '脑髓渴求「 Ⅲ 」',
            desc: '提升墓园中的僵尸的攻击力 固定提升5点',
            value: 5,
            id: 11,
            need: 160, // 需要消耗的不死精元数量
        },
        {
            name: '不朽「 Ⅲ 」',
            desc: '提升墓园中的僵尸的最大生命值 固定提升200点',
            value: 200,
            id: 12,
            need: 200, // 需要消耗的不死精元数量
        },
        {
            name: '破坏意志「 Ⅱ 」',
            desc: '提升墓园中的僵尸的攻击力 提升20%',
            value: 0.2,
            id: 12,
            need: 300, // 需要消耗的不死精元数量
        }
    ],
    tombstone: [ // 墓园强化
        {
            name: '墓园召唤「 Ⅰ 」',
            desc: '僵尸回归率增加20%',
            value: 20,
            id: 1,
            need: 10, // 需要消耗的不死精元数量
        },
        {
            name: '窃取「 Ⅰ 」',
            desc: '阳光偷取率增加20%',
            value: 20,
            id: 2,
            need: 20, // 需要消耗的不死精元数量
        },
        {
            name: '不死之力「 Ⅰ 」',
            desc: '唤醒的僵尸等级提升1',
            value: 1,
            id: 3,
            need: 50, // 需要消耗的不死精元数量
        },
        {
            name: '墓园召唤「 Ⅱ 」',
            desc: '僵尸回归率增加20%',
            value: 20,
            id: 4,
            need: 80, // 需要消耗的不死精元数量
        },
        {
            name: '墓园扩张「 Ⅰ 」',
            desc: '墓园拥有僵尸最大数量增加5',
            value: 5,
            id: 5,
            need: 100, // 需要消耗的不死精元数量
        },
        {
            name: '唤醒「 Ⅰ 」',
            desc: '唤醒需要的时间减少20%, 墓碑冷却时间减少20%',
            value: 20,
            id: 6,
            need: 150, // 需要消耗的不死精元数量
        },
        {
            name: '墓园召唤「 Ⅲ 」',
            desc: '僵尸回归率增加20%',
            value: 20,
            id: 7,
            need: 200, // 需要消耗的不死精元数量
        },
        {
            name: '窃取「 Ⅱ 」',
            desc: '阳光偷取率增加20%',
            value: 20,
            id: 8,
            need: 300, // 需要消耗的不死精元数量
        },
        {
            name: '不死之力「 Ⅱ 」',
            desc: '唤醒的僵尸等级提升1',
            value: 1,
            id: 9,
            need: 500, // 需要消耗的不死精元数量
        },
        {
            name: '墓园扩张「 Ⅱ 」',
            desc: '墓园拥有僵尸最大数量增加5',
            value: 5,
            id: 10,
            need: 800, // 需要消耗的不死精元数量
        },
        {
            name: '唤醒「 Ⅱ 」',
            desc: '唤醒需要的时间减少20%, 墓碑冷却时间减少20%',
            value: 20,
            id: 11,
            need: 1000, // 需要消耗的不死精元数量
        },
        {
            name: '墓园召唤「 Ⅳ 」',
            desc: '僵尸回归率增加40%',
            value: 40,
            id: 12,
            need: 1500, // 需要消耗的不死精元数量
        },
    ],
}

const getSacrificeBuff = (userSacrifice) => {

}

const getTombstoneInfo = (userTombstone) => {
    let list = zombieList.filter(item => item.tombstoneLevel <= userTombstone.level)
    userTombstone.cdEnd = userTombstone.cdEnd || '现在'
    let tombstoneInfo = [
        '墓碑等级：Lv. ' + userTombstone.level,
        '不死精元：' + userTombstone.undeadEssence,
        '墓园僵尸数量：' + userTombstone.zombie.length + ' / ' + userTombstone.zombieMax,
        '下次可使用墓碑时间：' + userTombstone.cdEnd,
        '一次最多可同时唤醒' + userTombstone.wakeUpZombieMax + '个僵尸',
    ]
    if (userTombstone.zombie && userTombstone.zombie.length) {
        tombstoneInfo.push('墓园中的僵尸：')
        userTombstone.zombie.map((i, index) => {
            tombstoneInfo.push(`id: ${index + 1} 「 ${i.name} 」hp：${i.hp} / ${i.maxHp}`) 
        })
    }
    if (userTombstone.cdEnd != '现在') tombstoneInfo.push('距离墓碑冷却完成还有：' + moment(userTombstone.cdEnd, 'YYYY-MM-DD HH:mm:ss').diff(moment(), 'minutes') + '分钟')
    if (userTombstone.wakeUpZombie && userTombstone.wakeUpZombie.length) {
        tombstoneInfo.push('当前正在唤醒僵尸：')
        userTombstone.wakeUpZombie.map(i => {
            tombstoneInfo.push(`「 ${i.name} 」` + ' x ' + i.num) 
        })
        tombstoneInfo.push('唤醒完成时间：' + userTombstone.wakeUpTime)
    }
    tombstoneInfo.push('当前墓碑等级可以唤醒的僵尸：')
    list.map(i => {
        tombstoneInfo.push(`「 ${i.name} 」`)
    })
    tombstoneInfo.push('使用指令「 唤醒 」 或 「 wakeup 」唤醒僵尸 服从于你吧')
    tombstoneInfo.push('Tip：提升墓碑等级，有更大的概率唤醒更强大的僵尸喵~\n进攻花园有概率获得不死精元和各种道具')
    return tombstoneInfo.join('\n')
}

// 分钟定时器 每分钟检查用户正在唤醒的僵尸是否已经唤醒完成
const userWakeUpZombieCallback = (userTombstone = getUserDefaultTombstone()) => {
    let isDone = userTombstone.wakeUpTime && moment(userTombstone.wakeUpTime, 'YYYY-MM-DD HH:mm:ss').isBefore(moment()) || userTombstone.wakeUpTime == ''
    if (isDone) {
        userTombstone.wakeUpZombie.map(i => {
            let item = zombieList.find(j => j.id == i.id)
            for (let index = 0; index < i.num; index++) {
                userTombstone.zombie.push(item)
            }
        })
        userTombstone.wakeUpZombie = []
        userTombstone.wakeUpTime = ''
        userTombstone.isChanged = true
    }
    let isDone1 = userTombstone.cdEnd && moment(userTombstone.cdEnd, 'YYYY-MM-DD HH:mm:ss').isBefore(moment()) || userTombstone.cdEnd == ''
    if (isDone1) {
        userTombstone.cdEnd = ''
        userTombstone.isChanged = true
    }
    return userTombstone
}



export {
    tombstoneOpenTip,
    userDefaultTombstone,
    getUserDefaultTombstone,
    getTombstoneInfo,
    userWakeUpZombieCallback,
}